8×8 LED matrix on an Arduino
I picked a SZ410788K 8×8 LED matrix out of my junk bin today and decided to play around with it. It cost me about 1USD in Aitendo, Akihabara. A little googling brought up the following:
I decided to hook it up to an Arduino (yea I know, I know).
(more to follow)
Here’s some quick code that scans the matrix:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | void setup() { // set the digital pin as output: pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); pinMode(A5, OUTPUT); pinMode(A4, OUTPUT); pinMode(A3, OUTPUT); pinMode(A2, OUTPUT); } void flash( int x, int y) { int state1=HIGH; int state2=LOW; for ( int n=0;n<2;n++) { if (n==0) { state1=HIGH; state2=LOW; } else { state1=LOW; state2=LOW; } if (x==0) digitalWrite(8, state1); else digitalWrite(8, state2); if (x==1) digitalWrite(9, state1); else digitalWrite(9, state2); if (x==2) digitalWrite(10, state1); else digitalWrite(10, state2); if (x==3) digitalWrite(11, state1); else digitalWrite(11, state2); if (x==4) digitalWrite(A5, state1); else digitalWrite(A5, state2); if (x==5) digitalWrite(A4, state1); else digitalWrite(A4, state2); if (x==6) digitalWrite(A3, state1); else digitalWrite(A3, state2); if (x==7) digitalWrite(A2, state1); else digitalWrite(A2, state2); if (y==0) digitalWrite(12, state1); else digitalWrite(12, state2); if (y==1) digitalWrite(13, state1); else digitalWrite(13, state2); if (y==2) digitalWrite(2, state1); else digitalWrite(2, state2); if (y==3) digitalWrite(3, state1); else digitalWrite(3, state2); if (y==4) digitalWrite(4, state1); else digitalWrite(4, state2); if (y==5) digitalWrite(5, state1); else digitalWrite(5, state2); if (y==6) digitalWrite(6, state1); else digitalWrite(6, state2); if (y==7) digitalWrite(7, state1); else digitalWrite(7, state2); if (n==0) delay(50); } } void loop() { for ( int x=0;x<8;x++) { for ( int y=0;y<8;y++) { flash(x,y); } } } |
The pins are connected as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Arduino Matrix 2 K6 3 K5 4 K4 5 K3 6 K2 7 K1 8 K8 9 K7 10 A8 11 A7 12 A6 13 A5 A5 A4 A4 A3 A3 A2 A2 A1 |
A 2N3904 is used to switch the grounds in on the A pins. So the circuit looks like this: